home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 37
/
Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso
/
Aminet
/
util
/
rexx
/
FWCalendar.lha
/
FWCalendar
/
FindNewData.rexx
next >
Wrap
OS/2 REXX Batch file
|
1999-11-25
|
5KB
|
205 lines
/**/
parse arg OldFile NewFile
call addlib('rexxreqtools.library', 0, -30, 0)
Diff = ''
call open('Temp', strip(OldFile))
OldData = readch('Temp', 65535)
call close('Temp')
call open('Temp', strip(NewFile))
NewData = readch('Temp', 65535)
call close('Temp')
DataCount = 0
call openv('OldData')
do until eofv('OldData')
VarLine = strip(readvln('OldData'))
if pos('/* End Pass One', VarLine) > 0 then leave
if (VarLine == '') | (left(VarLine, 2) == '/*') then iterate
VarName = strip(word(VarLine, 1))
Var.DataCount = VarName
DataCount = DataCount + 1
end
call closev('OldData')
call openv('Diff')
call openv('NewData')
do until eofv('NewData')
VarLine = strip(readvln('NewData'))
if pos('/* End Pass One', VarLine) > 0 then leave
if (VarLine == '') | (left(VarLine, 2) == '/*') then iterate
VarName = strip(word(VarLine, 1))
if MemberID(VarName, 'Var', DataCount, 0) == -1 then do
call writevln('Diff', VarLine)
end
end
call closev('NewData')
call closev('Diff')
if Diff ~= '' then do
call open('Temp', pathpart(OldFile)'FWCalendar.diff', 'W')
call writech('Temp', Diff)
call close('Temp')
end
exit
/***//******* VIO Routines () Subroutine ***********/
/***//** OpenV() **/
OpenV:
parse arg VIO_Variable
if Open.VIO_Variable ~= 1 then do
Open.VIO_Variable = 1
Pointer.VIO_Variable = 1
EOF.VIO_Variable = 0
return 1
end
else return 0
/**/
/***//** CloseV() **/
CloseV:
parse arg VIO_Variable
If Open.VIO_Variable == 0 then return 0
Open.VIO_Variable = 0
return 1
/**/
/***//** SeekV() **/
SeekV:
parse arg VIO_Variable, VIO_Offset, VIO_Anchor
if Open.VIO_Variable == 1 then do
VIO_Anchor = upper(left(VIO_Anchor, 1))
VIO_Value = Value(VIO_Variable)
select
when VIO_Anchor == 'B' then Pointer.VIO_Variable = VIO_Offset
when VIO_Anchor == 'E' then Pointer.VIO_Variable = length(VIO_Value) + VIO_Offset
otherwise Pointer.VIO_Variable = Pointer.VIO_Variable + VIO_Offset
end
if Pointer.VIO_Variable > length(VIO_Value) then Pointer.VIO_Variable = length(VIO_Value) + 1
if Pointer.VIO_Variable == 0 then Pointer.VIO_Variable = 1
return Pointer.VIO_Variable
end
else return 0
/**/
/***//** ReadVCh() **/
ReadVCh:
parse arg VIO_Variable, VIO_Length
if VIO_Length == '' then VIO_Length = 1
if Open.VIO_Variable == 1 then do
if EOF.VIO_Variable == 0 then do
VIO_Value = Value(VIO_Variable)
VIO_Ret = substr(VIO_Value, Pointer.VIO_Variable, VIO_Length)
Pointer.VIO_Variable = Pointer.VIO_Variable + VIO_Length
if Pointer.VIO_Variable > length(VIO_Value) then EOF.VIO_Variable = 1
else EOF.VIO_Variable = 0
end
else VIO_Ret = ''
end
else VIO_Ret = ''
return VIO_Ret
/**/
/***//** ReadVLn(RV) **/
ReadVLn:
parse arg VIO_Variable, VIO_Count, VIO_SepChar
if VIO_Count == '' then VIO_Count = 1
if VIO_SepChar == '' then VIO_SepChar = '0a'x
if Open.VIO_Variable == 1 then do
VIO_Value = Value(VIO_Variable)
VIO_Ret = ''
do VIO_i = 1 to VIO_Count
VIO_LF = pos('0a'x, VIO_Value, Pointer.VIO_Variable)
if VIO_LF > 0 then do
VIO_Ret = VIO_Ret''substr(VIO_Value, Pointer.VIO_Variable, VIO_LF - Pointer.VIO_Variable)
Pointer.VIO_Variable = VIO_LF + 1
if VIO_LF = length(VIO_Value) then EOF.VIO_Variable = 1
else EOF.VIO_Variable = 0
end
else do
if Pointer.VIO_Variable < length(VIO_Value) then do
VIO_Ret = VIO_Ret''substr(VIO_Value, Pointer.VIO_Variable)
Pointer.VIO_Variable = length(VIO_Value) + 1
EOF.VIO_Variable = 1
end
end
if EOF.VIO_Variable == 1 then leave
if VIO_i ~= VIO_Count then VIO_Ret = VIO_Ret''VIO_SepChar
end
end
else VIO_Ret = ''
return VIO_Ret
/**/
/***//** WriteVCh() **/
WriteVCh:
parse arg VIO_Variable, VIO_String, VIO_Option
VIO_Value = Value(VIO_Variable)
VIO_Option = upper(left(VIO_Option, 1))
VIO_Length = length(VIO_Value)
if VIO_Option == 'C' then do
VIO_Value = Insert(VIO_String, VIO_Value, Pointer.VIO_Variable - 1)
Pointer.VIO_Variable = Pointer.VIO_Variable + length(VIO_String)
end
else if VIO_Option == 'B' then do
VIO_Value = VIO_String''VIO_Value
Pointer.VIO_Variable = length(VIO_String) + 1
end
else do
VIO_Value = VIO_Value''VIO_String
Pointer.VIO_Variable = length(VIO_Value)
end
interpret VIO_Variable'= VIO_Value'
if length(VIO_Value) = VIO_Length + length(VIO_String) then VIO_Ret = length(VIO_String)
else VIO_Ret = 0
return VIO_Ret
/**/
/***//** WriteVLn() **/
WriteVLn:
parse arg VIO_Variable, VIO_String, VIO_Option
return WriteVCh(VIO_Variable, VIO_String||'0a'x, VIO_Option)
/**/
/***//** EOFV() **/
EOFV:
parse arg VIO_Variable
if Open.VIO_Variable == 1 then return EOF.VIO_Variable
else return 1
/**/
/**/
/***//******* MemberID (MI) Subroutine *********/
MemberID:
parse arg MI_Member, MI_Array, MI_Count, MI_Start
if MI_Count == '' then interpret 'MI_Count = 'MI_Array'.Count'
if MI_Start == '' then MI_Start = 0
if MI_Start == 0 then MI_Count = MI_Count - 1
do MI_i = MI_Start to MI_Count
if upper(value(MI_Array'.'MI_i)) == upper(MI_Member) then return MI_i
end
return -1
/**/